// 引入项目中所有的全局组件：不需引入，直接使用
import SvgIcon from '@/components/SvgIcon/index.vue'
import Pagination from '@/components/Pagination/index.vue'
// 引入element-plus提供全部图标组件
import * as ElementPlusIconsVue from '@element-plus/icons-vue'

// 全局对象
const allGlobalComponents = { SvgIcon, Pagination }

// 对外暴露插件对象
export default {
  // 务必叫做install方法
  /*
  一个插件可以是一个拥有 install() 方法的对象，也可以直接是一个安装函数本身。
  安装函数会接收到安装它的应用实例和传递给 app.use() 的额外选项作为参数
  */
  install(app: { component: (arg0: string, arg1: any) => void }, option: any) {
    // 注册项目所有的全局组件
    Object.keys(allGlobalComponents).forEach((key) => {
      // 注册为全局组件
      app.component(key, allGlobalComponents[key])
    })
    // 将element-plus提供图标注册为全局组件
    for (const [key, component] of Object.entries(ElementPlusIconsVue)) {
      app.component(key, component)
    }
  },
}
